﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cotizav.CONEXION;

namespace Cotizav.PRESENTACION.Maestro
{
    public partial class IUFormato : Form
    {
        List<FORMATO> formatos;
        CtrlFormato ctformato;
        
        public IUFormato()
        {
            InitializeComponent();

            formatos = new List<FORMATO>();
            ctformato = new CtrlFormato();
        }

        private void IUFormato_Load(object sender, EventArgs e)
        {
            formatos = ctformato.getListFormatos();
            gridFormato.DataSource = null;
            gridFormato.DataSource = formatos;            
            setRowsReadOnly();
            gridFormato.ClearSelection();
        }

        private void setRowsReadOnly()
        {
            foreach (DataGridViewRow dr in gridFormato.Rows)
            {
                dr.ReadOnly = true;
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txtFormato.Text))
            {
                FORMATO format = new FORMATO()
                {
                    nombreEncabezado = txtFormato.Text,
                    esDefecto = chkEsDefecto.Checked ? 1 : 0,
                    eliminado = 0
                };

                DialogResult dr = ctformato.registrarFormato(format);
                if (dr == DialogResult.OK)
                {
                    formatos = ctformato.getListFormatos();
                    gridFormato.DataSource = null;
                    gridFormato.DataSource = formatos;
                    setRowsReadOnly();
                    gridFormato.ClearSelection();
                }

                txtFormato.ResetText();
                chkEsDefecto.Checked = false;
            }
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (gridFormato.SelectedRows.Count > 0)
            {
                btnAgregar.Enabled = false;
                txtFormato.Enabled = false;

                switch (btnModificar.Text)
                {
                    case "Modificar":
                        int index = gridFormato.SelectedRows[0].Index;
                        btnModificar.Text = "Completar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.accept;

                        btnCancelar.Visible = true;

                        gridFormato.SelectedRows[0].ReadOnly = false;
                        gridFormato.SelectedRows[0].Cells[1].Selected = true;
                        gridFormato.CurrentCell = gridFormato.SelectedRows[0].Cells[1];
                        gridFormato.BeginEdit(true);
                        break;
                    case "Completar":
                        int ind = gridFormato.CurrentRow.Index;
                        if (gridFormato.Rows[ind].Cells[1].Value != null)
                        {
                            if (MessageBox.Show("¿Confirma actualizar la información?", "COTIZAV", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                            {
                                FORMATO format = new FORMATO()
                                {
                                    idFormato = gridFormato.Rows[ind].Cells[0].Value.ToString(),
                                    nombreEncabezado = gridFormato.Rows[ind].Cells[1].Value.ToString(),
                                    eliminado = 0
                                };

                                DialogResult dr = ctformato.actualizarFormato(format);
                            }
                        }
                        else
                        {
                            MessageBox.Show("La celda se encuentra vacía", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }

                        formatos = ctformato.getListFormatos();
                        gridFormato.DataSource = null;
                        gridFormato.DataSource = formatos;
                        setRowsReadOnly();
                        gridFormato.ClearSelection();

                        btnModificar.Text = "Modificar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.edit16;

                        btnCancelar.Visible = false;

                        btnAgregar.Enabled = true;
                        txtFormato.Enabled = true;
                        chkEsDefecto.Checked = false;
                        break;
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            //actualizamos la lista
            formatos = ctformato.getListFormatos();
            gridFormato.DataSource = null;
            gridFormato.DataSource = formatos;
            setRowsReadOnly();
            gridFormato.ClearSelection();

            btnModificar.Text = "Modificar";
            btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

            btnCancelar.Visible = false;

            btnAgregar.Enabled = true;
            txtFormato.Enabled = true;
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridFormato.SelectedRows.Count > 0)
            {
                if (MessageBox.Show("¿Confirma eliminar el sector?", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                {
                    int index = gridFormato.SelectedRows[0].Index;
                    FORMATO format = formatos.ElementAt(index);
                    format.eliminado = 1;

                    ctformato.eliminarFormato(format);
                }
            }

            //actualizamos la lista      
            formatos = ctformato.getListFormatos();
            gridFormato.DataSource = null;
            gridFormato.DataSource = formatos;
            setRowsReadOnly();
            gridFormato.ClearSelection();
        }

        private void gridFormato_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridFormato.DataSource != null)
            {
                gridFormato.Columns["idFormato"].Visible = false;
                gridFormato.Columns["idcartacompromiso"].Visible = false;
                gridFormato.Columns["esDefecto"].Visible = false;
                gridFormato.Columns["eliminado"].Visible = false;
                gridFormato.Columns["CARTA_COMPROMISO"].Visible = false;

                gridFormato.Columns["nombreEncabezado"].HeaderText = "Formato";
                gridFormato.Columns["nombreEncabezado"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; 
            }
        }
    }
}
